﻿package com.adsame.utils
{
	import com.adsame.interfaces.*;

	public class AsamEvent implements IAsamEvent
	{
		/* ==================== 成员变量定义开始 ==================== */

		protected var __events : IAsamIterator = new AsamIterator();
		/* ==================== 成员变量定义结束 ==================== */


		/* ==================== 成员方法定义开始 ==================== */

		/**
		 * addListener 
		 * 
		 * @param event : String $event : String 
		 * @param callback : Function $callback : Function 
		 * @param scope : Object = null $scope : Object = null 
		 * @access public
		 * @return void
		 */
		public function addListener(event : String, callback : Function, scope : Object = null) : void
		{
			var event_obj : Object = {
				callback 	: callback,
				scope 		: scope,
				p_next 		: null
			};

			this.__events.add(event_obj, event);
		}

		/**
		 * fireEvent 
		 * 
		 * @param event : String $event : String 
		 * @access public
		 * @return void
		 */
		public function fireEvent(event : String, refer : Object) : void
		{
			var event_run : Function = function(event_obj : Object) {
				event_obj.callback.call(event_obj.scope, refer);
			};

			this.__events.eachByName(event, event_run, null);
		}
		/* ==================== 成员方法定义结束 ==================== */
	}
}
